In computing environments, a number of different devices generally cooperate in order to accomplish a plurality of tasks, the result of which is that some devices or service components within a system may operate closer to their operating capacity than others, possibly resulting in the creation of processing bottlenecks. It is generally desirable to optimally allocate processing power available at each of the devices in such a system among a set of tasks to be accomplished, particularly at the devices most likely to experience data traffic or computing bottlenecks. The systems in which such problems arise include data storage systems, telecommunication systems, and distributed data processing systems of various kinds.
In the prior art, service provided by various service components may be distributed among a plurality of tasks by first assigning priority levels to each of the plurality of tasks and then employing a prioritization algorithm, such as time sharing, to determine the distribution of service among the plurality of tasks according to the various priority levels.
In the case of hierarchic data storage systems, data may be stored at various levels having varying levels of data storage and retrieval speed and efficiency. Where the priority rules for deciding which levels of a storage hierarchy different data will be stored in are fixed in advance according to properties of the data which are known in advance, the data storage system will generally be unable to optimize its performance effectively at run time. Thus, if a data processing application yields a situation in which frequently accessed data is stored in a less rapidly accessible portion of a hierarchic data storage system, the systems of the prior art will generally continue to access such inefficiently stored data without modification at run time. Accordingly, a processing bottleneck could occur as a consequence of fixing processing priorities prior to beginning program execution.
Accordingly, it is a problem in the art that because prior art systems generally do not take account of the consumption of processing resources within a distributed processing system, the processing system is generally unable to respond in real time to changes in the workloads which are imposed upon various system components at run time.